package scv.control.cadastro;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import scv.beans.Vendedor;

@SuppressWarnings("serial")
public class CadastroVendedor extends JFrame{
	
	private JButton cadastrar, fechar, limpar;
	private JLabel nomeVendedor, loginVendedor, senhaVendedor;
	private JTextField nome, login;
	private JPasswordField senha;
	public static EntityManagerFactory factory=null;
	
	public CadastroVendedor(EntityManagerFactory f) {
		factory=f;
		setTitle("Cadastro de Vendedor");
		setLayout(null);
		
		cadastrar = new JButton("Cadastrar");
		fechar = new JButton("Fechar");
		limpar = new JButton("Limpar");
		
		nomeVendedor = new JLabel("Nome vendedor: ");
		loginVendedor = new JLabel("Login: ");
		senhaVendedor = new JLabel ("Senha: ");
		
		nome = new JTextField(120);
		login = new JTextField(120);
		senha = new JPasswordField (120);
		
		nomeVendedor.setBounds(50,20,120,20);
		loginVendedor.setBounds(50,80,80,20);
		senhaVendedor.setBounds(50,110,80,20);
		
		nome.setBounds(50,45,500,20);
		login.setBounds(120,80,80,20);
		senha.setBounds(120,110,80,20);
		
		cadastrar.setBounds(50,220,100,25);
		fechar.setBounds(450,220,100,25);
		limpar.setBounds(155,220,100,25);
		
		add(cadastrar);
		add(fechar);
		add(limpar);
		
		add(nomeVendedor);
		add(loginVendedor);
		add(senhaVendedor);
		
		add(nome);
		add(login);
		add(senha);

		setSize(610,330);
		setVisible(true);
		setLocationRelativeTo(null);
		setResizable(false);
		
		fechar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				dispose();
			}
		});
		
		limpar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				nome.setText("");
				login.setText("");
				senha.setText("");
				nome.requestFocus();
			}
		});
		
		cadastrar.addActionListener(new ActionListener(){
			@SuppressWarnings("deprecation")
			public void actionPerformed(ActionEvent e) {
				if(nome.getText().equals("")){
					JOptionPane.showMessageDialog(null,"Preencha o nome para que seja validado o cadastro !");
					nome.requestFocus();
				}
				else if(login.getText().equals("")){
					JOptionPane.showMessageDialog(null,"Insira o login para o cadastro de Vendedor");
					login.requestFocus();
				}
				else if(senha.getText().equals("")){
					JOptionPane.showMessageDialog(null,"Insira uma Senha para o cadastro de Vendedor");
					senha.requestFocus();
				}
				else{
				EntityManager manager = factory.createEntityManager();
				
				Vendedor vendedor = new Vendedor();
				
				vendedor.setLoginVendedor(login.getText());
				vendedor.setNome(nome.getText().toUpperCase());
				vendedor.setSenha(criptografarSenha(senha.getText()));
				
				manager.getTransaction().begin();
				manager.persist(vendedor);
				manager.getTransaction().commit();
				manager.close();
				
				JOptionPane.showMessageDialog(null, "Cadastro realizado com sucesso");
			}
			}		
		});
		
	}	
	public String criptografarSenha(String senha) {

		if (senha.length()==0)   
			return null;   
		else   
		{   
			MessageDigest md;
			try {
				md = MessageDigest.getInstance("SHA1");
				md.update(senha.getBytes());   
				byte[] hash = md.digest();   
				StringBuffer senhaEncrip = new StringBuffer();   
				for (int i=0;i<hash.length;i++)   
				{   
					senhaEncrip.append(Integer.toHexString(hash[i]&0xff));   
				}   
				return senhaEncrip.toString();   
			} catch (NoSuchAlgorithmException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}   
			return "";
		}   

	}
}
